Skip to content
This repository has been archived by the owner on Sep 10, 2022. It is now read-only.

WIP: Openshift 3 Rebase PR #15

Open
wants to merge 72 commits into
base: openshift
Choose a base branch
from

Conversation

wseaton
Copy link

@wseaton wseaton commented Mar 5, 2021

I went ahead and rebased @noseka1's 1.10.12-2 branch onto the changes we've made in openshift so I can test all of the changes together. Now the two branches can be automatically merged.

This could be horribly broken, I need some time to test it.

Built image:
docker pull quay.io/wseaton/airflow-operator:openshift-3-rebase

noseka1 and others added 30 commits July 13, 2020 21:01
Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
Airflow defaults to IfNotPresent image pull policy. Remove the
redundant WORKER_CONTAINER_IMAGE_PULL_POLICY to allow the
configuration in airflow.cfg to take effect.
Kubernetes allows an empty apiGroups field but Openshift does not.
Validation fails on OpenShift because it uses a bit tighter model.
See also:
apache#25
kubernetes-sigs/kustomize#2434
kubernetes-sigs/kustomize#2435

Failing command:

NOTGCP=xxx PATH=/home/anosek/install/go13/go/bin:$PATH IMG=quay.io/noseka1/airflow-operator:openshift make deploy

/home/anosek/go/bin/controller-gen "crd:trivialVersions=true" rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
cd config/manager && kustomize edit set image controller=quay.io/noseka1/airflow-operator:openshift
panic: runtime error: index out of range [-1]

goroutine 1 [running]:
sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile.(*kustomizationFile).parseCommentedFields(0xc000135880, 0xc000190000, 0x32d, 0x380, 0x0, 0x0)
        /workspace/kustomize/internal/commands/kustfile/kustomizationfile.go:203 +0x7ba
sigs.k8s.io/kustomize/kustomize/v3/internal/commands/kustfile.(*kustomizationFile).Read(0xc000135880, 0x2af0820, 0xc000135880, 0x0)
        /workspace/kustomize/internal/commands/kustfile/kustomizationfile.go:161 +0x2c3
sigs.k8s.io/kustomize/kustomize/v3/internal/commands/edit/set.(*setImageOptions).RunSetImage(0xc0001300b8, 0x1cbab80, 0x2af0820, 0x1, 0x0)
        /workspace/kustomize/internal/commands/edit/set/setimage.go:119 +0x76
sigs.k8s.io/kustomize/kustomize/v3/internal/commands/edit/set.newCmdSetImage.func1(0xc00053e580, 0xc00022aee0, 0x1, 0x1, 0x0, 0x0)
        /workspace/kustomize/internal/commands/edit/set/setimage.go:82 +0xab
github.com/spf13/cobra.(*Command).execute(0xc00053e580, 0xc00022aeb0, 0x1, 0x1, 0xc00053e580, 0xc00022aeb0)
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:842 +0x453
github.com/spf13/cobra.(*Command).ExecuteC(0xc00023c000, 0x9, 0x1ca4f00, 0xc0003e2f00)
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:950 +0x349
github.com/spf13/cobra.(*Command).Execute(...)
        /go/pkg/mod/github.com/spf13/[email protected]/command.go:887
main.main()
        /workspace/kustomize/main.go:23 +0x71
make: *** [Makefile:65: deploy] Error 2
Kind *v1alpha1.AirflowBase is incorrect, it should be AirflowBase:

2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)  { reconciling component
2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)  Expected Resources:
2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)   exp: k8s airflow-on-k8s-operator-system/*v1.StatefulSet/pc-base-postgres
2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)   exp: k8s airflow-on-k8s-operator-system/*v1.Secret/pc-base-sql
2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)   exp: k8s airflow-on-k8s-operator-system/*v1beta1.PodDisruptionBudget/pc-base-postgres
2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)   exp: k8s airflow-on-k8s-operator-system/*v1.Service/pc-base-sql
2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)  Observed Resources:
2020/07/11 07:40:24 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)  Reconciling Resources:
E0711 07:40:24.905087 2562968 genericreconciler.go:53] Failed: [*v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)] Create. statefulsets.apps "pc-base-postgres" is forbidden: cannot set blockOwnerDeletion in this case because cannot find RESTMapping for APIVersion airflow.apache.org/v1alpha1 Kind *v1alpha1.AirflowBase: no matches for kind "*v1alpha1.AirflowBase" in version "airflow.apache.org/v1alpha1"
E0711 07:40:24.950443 2562968 genericreconciler.go:53] Failed: [*v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)] Create. secrets "pc-base-sql" is forbidden: cannot set blockOwnerDeletion in this case because cannot find RESTMapping for APIVersion airflow.apache.org/v1alpha1 Kind *v1alpha1.AirflowBase: no matches for kind "*v1alpha1.AirflowBase" in version "airflow.apache.org/v1alpha1"
E0711 07:40:24.995995 2562968 genericreconciler.go:53] Failed: [*v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)] Create. poddisruptionbudgets.policy "pc-base-postgres" is forbidden: cannot set blockOwnerDeletion in this case because cannot find RESTMapping for APIVersion airflow.apache.org/v1alpha1 Kind *v1alpha1.AirflowBase: no matches for kind "*v1alpha1.AirflowBase" in version "airflow.apache.org/v1alpha1"
E0711 07:40:25.058237 2562968 genericreconciler.go:53] Failed: [*v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)] Create. services "pc-base-sql" is forbidden: cannot set blockOwnerDeletion in this case because cannot find RESTMapping for APIVersion airflow.apache.org/v1alpha1 Kind *v1alpha1.AirflowBase: no matches for kind "*v1alpha1.AirflowBase" in version "airflow.apache.org/v1alpha1"
2020/07/11 07:40:25 *v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)  } reconciling component
Move the Airflow UI and Flower-related definitions to
airflowcluster_types.

Reorder the variables.
Mount persistent volume at /var/lib/pgsql/data.

LivenessProbe and readinessProbes copied from the OpenShift
template that can be retrieved using:

oc get template -n openshift postgresql-ephemeral -o yaml
For example:

if r.Spec.UI.EnableRoutes == true {
	bag.WithTemplate("route.yaml", &routev1.RouteList{})
}
This message appeared in the logs:
/usr/local/lib/python3.7/site-packages/airflow/configuration.py:631:
DeprecationWarning: Specifying both AIRFLOW_HOME environment variable
and airflow_home in the config file is deprecated. Please use only the
AIRFLOW_HOME environment variable and remove the config file entry.

The airflow_home config setting has been deprecated in Airflow 1.10.3,
see also:
https://github.com/apache/airflow/blob/master/UPDATING.md#removal-of-airflow_home-config-setting
AirflowBase controller tests
/home/anosek/git/noseka1/airflow-on-k8s-operator/test/e2e/base/base_test.go:70
  creating a AirflowBase with mysql [It]
  /home/anosek/git/noseka1/airflow-on-k8s-operator/test/e2e/base/base_test.go:76

  failed to create CR : AirflowBase.airflow.apache.org "" is invalid: metadata.name: Required value: name or generateName is required
  Unexpected error:
      <*errors.StatusError | 0xc000193540>: {
          ErrStatus: {
              TypeMeta: {Kind: "", APIVersion: ""},
              ListMeta: {
                  SelfLink: "",
                  ResourceVersion: "",
                  Continue: "",
                  RemainingItemCount: nil,
              },
              Status: "Failure",
              Message: "AirflowBase.airflow.apache.org \"\" is invalid: metadata.name: Required value: name or generateName is required",
              Reason: "Invalid",
              Details: {
                  Name: "",
                  Group: "airflow.apache.org",
                  Kind: "AirflowBase",
                  UID: "",
                  Causes: [
                      {
                          Type: "FieldValueRequired",
                          Message: "Required value: name or generateName is required",
                          Field: "metadata.name",
                      },
                  ],
                  RetryAfterSeconds: 0,
              },
              Code: 422,
          },
      }
      AirflowBase.airflow.apache.org "" is invalid: metadata.name: Required value: name or generateName is required
  occurred
Airflow examples on the master branch are not compatible
with the airflow 1.10.x at this time:

mk-cluster-airflowui-0 airflow-ui + exec airflow webserver
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,148] {{cli_action_loggers.py:107}} WARNING - Failed to log action with (_mysql_exceptions.OperationalError) (2006, "Unknown MySQL server host 'mc-base-sql' (-2)")
mk-cluster-airflowui-0 airflow-ui (Background on this error at: http://sqlalche.me/e/13/e3q8)
mk-cluster-airflowui-0 airflow-ui   ____________       _____________
mk-cluster-airflowui-0 airflow-ui  ____    |__( )_________  __/__  /________      __
mk-cluster-airflowui-0 airflow-ui ____  /| |_  /__  ___/_  /_ __  /_  __ \_ | /| / /
mk-cluster-airflowui-0 airflow-ui ___  ___ |  / _  /   _  __/ _  / / /_/ /_ |/ |/ /
mk-cluster-airflowui-0 airflow-ui  _/_/  |_/_/  /_/    /_/    /_/  \____/____/|__/
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,500] {{__init__.py:51}} INFO - Using executor KubernetesExecutor
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,502] {{dagbag.py:396}} INFO - Filling up the DagBag from /usr/local/airflow/dags/gitdags/airflow/example_dags/
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,507] {{dagbag.py:239}} ERROR - Failed to import: /usr/local/airflow/dags/gitdags/airflow/example_dags/example_bash_operator.py
mk-cluster-airflowui-0 airflow-ui Traceback (most recent call last):
mk-cluster-airflowui-0 airflow-ui   File "/usr/local/lib/python3.7/site-packages/airflow/models/dagbag.py", line 236, in process_file
mk-cluster-airflowui-0 airflow-ui     m = imp.load_source(mod_name, filepath)
mk-cluster-airflowui-0 airflow-ui   File "/usr/local/lib/python3.7/imp.py", line 171, in load_source
mk-cluster-airflowui-0 airflow-ui     module = _load(spec)
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap>", line 696, in _load
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
mk-cluster-airflowui-0 airflow-ui   File "/usr/local/airflow/dags/gitdags/airflow/example_dags/example_bash_operator.py", line 24, in <module>
mk-cluster-airflowui-0 airflow-ui     from airflow.operators.bash import BashOperator
mk-cluster-airflowui-0 airflow-ui ModuleNotFoundError: No module named 'airflow.operators.bash'
Remove --explicit-defaults-for-timestamp command-line option. The
explicit defaults for timestamps is ON by default in MySQL 8.0:
https://mysqlserverteam.com/new-defaults-in-mysql-8-0/

Use the old mysql_native_password authentication plugin by default. This
allows mysql clients that don't support caching_sha2_password to connect
to the database. The mysql client included in the docker-airflow image
doesn't support caching_sha2_password.

See also:
https://stackoverflow.com/questions/49963383/authentication-plugin-caching-sha2-password
https://access.redhat.com/solutions/4889951
This commit exposes the authentication options in the operator's
AirflowCluster resource. It also conveys the configuration options
to the Airflow UI container.

Examples of the authentication configuration:

1. Require no authentication (this is the default if no authentication
configuration is specified):

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    authentication:
      type: none

2. Log in with OpenShift. In this example, users are assigned the Admin role upon
successful login:

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    enableroutes: true
    authentication:
      type: openshift
      user_registration_role: Admin

3. Authenticate users against the database. This assumes, that users have been
created in the Airflow's database ahead of time, for example by using the airflow
create_user command, see also:
https://airflow.apache.org/docs/stable/cli-ref#create_user

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    enableroutes: true
    authentication:
      type: database
* Add Templates to controll AICoE CI

* Update .aicoe-ci.yaml

Co-authored-by: Harshad Reddy Nalla <[email protected]>

Co-authored-by: Harshad Reddy Nalla <[email protected]>
Missing templates were causing the error:
Failed: [*v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base]
gathering expected resources. open templates/svc.yaml: no such file or directory
noseka1 and others added 27 commits March 5, 2021 17:17
For example:

if r.Spec.UI.EnableRoutes == true {
	bag.WithTemplate("route.yaml", &routev1.RouteList{})
}
This message appeared in the logs:
/usr/local/lib/python3.7/site-packages/airflow/configuration.py:631:
DeprecationWarning: Specifying both AIRFLOW_HOME environment variable
and airflow_home in the config file is deprecated. Please use only the
AIRFLOW_HOME environment variable and remove the config file entry.

The airflow_home config setting has been deprecated in Airflow 1.10.3,
see also:
https://github.com/apache/airflow/blob/master/UPDATING.md#removal-of-airflow_home-config-setting
AirflowBase controller tests
/home/anosek/git/noseka1/airflow-on-k8s-operator/test/e2e/base/base_test.go:70
  creating a AirflowBase with mysql [It]
  /home/anosek/git/noseka1/airflow-on-k8s-operator/test/e2e/base/base_test.go:76

  failed to create CR : AirflowBase.airflow.apache.org "" is invalid: metadata.name: Required value: name or generateName is required
  Unexpected error:
      <*errors.StatusError | 0xc000193540>: {
          ErrStatus: {
              TypeMeta: {Kind: "", APIVersion: ""},
              ListMeta: {
                  SelfLink: "",
                  ResourceVersion: "",
                  Continue: "",
                  RemainingItemCount: nil,
              },
              Status: "Failure",
              Message: "AirflowBase.airflow.apache.org \"\" is invalid: metadata.name: Required value: name or generateName is required",
              Reason: "Invalid",
              Details: {
                  Name: "",
                  Group: "airflow.apache.org",
                  Kind: "AirflowBase",
                  UID: "",
                  Causes: [
                      {
                          Type: "FieldValueRequired",
                          Message: "Required value: name or generateName is required",
                          Field: "metadata.name",
                      },
                  ],
                  RetryAfterSeconds: 0,
              },
              Code: 422,
          },
      }
      AirflowBase.airflow.apache.org "" is invalid: metadata.name: Required value: name or generateName is required
  occurred
Airflow examples on the master branch are not compatible
with the airflow 1.10.x at this time:

mk-cluster-airflowui-0 airflow-ui + exec airflow webserver
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,148] {{cli_action_loggers.py:107}} WARNING - Failed to log action with (_mysql_exceptions.OperationalError) (2006, "Unknown MySQL server host 'mc-base-sql' (-2)")
mk-cluster-airflowui-0 airflow-ui (Background on this error at: http://sqlalche.me/e/13/e3q8)
mk-cluster-airflowui-0 airflow-ui   ____________       _____________
mk-cluster-airflowui-0 airflow-ui  ____    |__( )_________  __/__  /________      __
mk-cluster-airflowui-0 airflow-ui ____  /| |_  /__  ___/_  /_ __  /_  __ \_ | /| / /
mk-cluster-airflowui-0 airflow-ui ___  ___ |  / _  /   _  __/ _  / / /_/ /_ |/ |/ /
mk-cluster-airflowui-0 airflow-ui  _/_/  |_/_/  /_/    /_/    /_/  \____/____/|__/
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,500] {{__init__.py:51}} INFO - Using executor KubernetesExecutor
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,502] {{dagbag.py:396}} INFO - Filling up the DagBag from /usr/local/airflow/dags/gitdags/airflow/example_dags/
mk-cluster-airflowui-0 airflow-ui [2020-07-19 14:00:18,507] {{dagbag.py:239}} ERROR - Failed to import: /usr/local/airflow/dags/gitdags/airflow/example_dags/example_bash_operator.py
mk-cluster-airflowui-0 airflow-ui Traceback (most recent call last):
mk-cluster-airflowui-0 airflow-ui   File "/usr/local/lib/python3.7/site-packages/airflow/models/dagbag.py", line 236, in process_file
mk-cluster-airflowui-0 airflow-ui     m = imp.load_source(mod_name, filepath)
mk-cluster-airflowui-0 airflow-ui   File "/usr/local/lib/python3.7/imp.py", line 171, in load_source
mk-cluster-airflowui-0 airflow-ui     module = _load(spec)
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap>", line 696, in _load
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
mk-cluster-airflowui-0 airflow-ui   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
mk-cluster-airflowui-0 airflow-ui   File "/usr/local/airflow/dags/gitdags/airflow/example_dags/example_bash_operator.py", line 24, in <module>
mk-cluster-airflowui-0 airflow-ui     from airflow.operators.bash import BashOperator
mk-cluster-airflowui-0 airflow-ui ModuleNotFoundError: No module named 'airflow.operators.bash'
Remove --explicit-defaults-for-timestamp command-line option. The
explicit defaults for timestamps is ON by default in MySQL 8.0:
https://mysqlserverteam.com/new-defaults-in-mysql-8-0/

Use the old mysql_native_password authentication plugin by default. This
allows mysql clients that don't support caching_sha2_password to connect
to the database. The mysql client included in the docker-airflow image
doesn't support caching_sha2_password.

See also:
https://stackoverflow.com/questions/49963383/authentication-plugin-caching-sha2-password
https://access.redhat.com/solutions/4889951
This commit exposes the authentication options in the operator's
AirflowCluster resource. It also conveys the configuration options
to the Airflow UI container.

Examples of the authentication configuration:

1. Require no authentication (this is the default if no authentication
configuration is specified):

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    authentication:
      type: none

2. Log in with OpenShift. In this example, users are assigned the Admin role upon
successful login:

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    enableroutes: true
    authentication:
      type: openshift
      user_registration_role: Admin

3. Authenticate users against the database. This assumes, that users have been
created in the Airflow's database ahead of time, for example by using the airflow
create_user command, see also:
https://airflow.apache.org/docs/stable/cli-ref#create_user

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    enableroutes: true
    authentication:
      type: database
The full error messages fixed by this commit:
E1221 20:55:37.573487       1 genericreconciler.go:54] Failed: [*v1alpha1.AirflowBase/airflow-on-k8s-operator-system/pc-base(cmpnt:*controllers.Postgres)] Create. statefulsets.apps "pc-base-postgres" is forbidden: cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on: , <nil>
E1221 21:39:31.549355       1 reflector.go:153] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:105: Failed to list *v1.Role: roles.rbac.authorization.k8s.io is forbidden: User "system:serviceaccount:airflow-on-k8s-operator-system:default" cannot list resource "roles" in API group "rbac.authorization.k8s.io" at the cluster scope
E1221 21:51:15.687682       1 genericreconciler.go:54] Failed:
[*v1alpha1.AirflowCluster/airflow-on-k8s-operator-system/pk-cluster(cmpnt:*controllers.UI)] Create. roles.rbac.authorization.k8s.io "pk-cluster-airflowui" is forbidden: user "system:serviceaccount:airflow-on-k8s-operator-system:default" (groups=["system:serviceaccounts" "system:serviceaccounts:airflow-on-k8s-operator-system" "system:authenticated"]) is attempting to grant RBAC permissions not currently held:
{APIGroups:[""], Resources:["pods/log"], Verbs:["get" "list"]}
E1221 21:58:06.151216       1 genericreconciler.go:54] Failed: [*v1alpha1.AirflowCluster/airflow-on-k8s-operator-system/pk-cluster(cmpnt:*controllers.Scheduler)] Create. roles.rbac.authorization.k8s.io "pk-cluster-scheduler" is forbidden: user "system:serviceaccount:airflow-on-k8s-operator-system:default" (groups=["system:serviceaccounts" "system:serviceaccounts:airflow-on-k8s-operator-system" "system:authenticated"]) is attempting to grant RBAC permissions not currently held:
{APIGroups:[""], Resources:["pods"], Verbs:["create" "get" "delete" "list" "watch"]}
{APIGroups:[""], Resources:["pods/exec"], Verbs:["create" "get"]}
enableroutes -> enableRoutes

Use camel case to align with the Kubernetes conventions.

Examples of the authentication configuration:

1. Require no authentication (this is the default if no authentication
configuration is specified):

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    authentication:
      type: none

2. Log in with OpenShift. In this example, users are assigned the Admin role upon
successful login:

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    enableRoutes: true
    authentication:
      type: openshift
      userRegistrationRole: Admin

3. Authenticate users against the database. This assumes, that users have been
created in the Airflow's database ahead of time, for example by using the airflow
create_user command, see also:
https://airflow.apache.org/docs/stable/cli-ref#create_user

apiVersion: airflow.apache.org/v1alpha1
kind: AirflowCluster
metadata:
  name: pk-cluster
spec:
  ui:
    enableRoutes: true
    authentication:
      type: database
* fixed role and non-existing-kind

* fixed role and non-existing-kind

* bug fixes

* changed role from cluster-admin to manager-role in templates/rolebinding.yaml

* Added routes for AirflowUI and Celery Flower UI

* Changed enableroutes from string to bool.
Added defaultEnableRoutes = False

* regenerated go.sum

* Changes image repos from personal to org

* Added comments for enableroutes usage
…-contrib#10)

* add a config option for ignoring git SSL verification
…ntrib#13)

* update git-sync container and make it configurable
* add dynamic env feature
* update desc on crd
* update the git sync root for new image
* name style changes
* struct refactor sync container related config
* set home to fix permissions issue for .netrc
@wseaton
Copy link
Author

wseaton commented Mar 8, 2021

Something currently isn't working here, I can't get the AirflowCluster CRD to get picked up and initialized by the operator. Also getting a lot of RBAC errors:

Failed to list *v1.Role: roles.rbac.authorization.k8s.io is forbidden: User "system:serviceaccount:REDACTED:default" cannot list resource "roles" in API group "rbac.authorization.k8s.io" at the cluster scope

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants